//package com.foreveross.bsl.monitor.web;
//
//import java.text.SimpleDateFormat;
//import java.util.ArrayList;
//import java.util.Date;
//import java.util.HashMap;
//import java.util.List;
//import java.util.Map;
//import javax.inject.Inject;
//import org.apache.cxf.common.util.StringUtils;
//import org.apache.log4j.Logger;
//import org.csair.monitor.application.MonitorApplication;
//import org.csair.monitor.application.vo.MonitorVO;
//import org.springframework.stereotype.Controller;
//import org.springframework.ui.Model;
//import org.springframework.web.bind.annotation.RequestMapping;
//import org.springframework.web.bind.annotation.RequestParam;
//import com.foreveross.bsl.mam.app.application.AppMainApplication;
//import com.foreveross.bsl.mam.app.application.AppVersionApplication;
//import com.foreveross.bsl.mam.app.application.vo.AppMainVo;
//import com.foreveross.bsl.mam.model.application.WidgetApplication;
//import com.foreveross.bsl.mam.model.application.vo.WidgetVO;
//import com.foreveross.bsl.mam.rbac.application.RbacUserRoleApplication;
//import com.foreveross.bsl.mam.rbac.application.RoleApplication;
//import com.foreveross.bsl.mam.rbac.application.UserApplication;
//import com.foreveross.bsl.mam.rbac.application.vo.RoleVO;
//import com.foreveross.bsl.mam.rbac.application.vo.UserVO;
//import com.foreveross.bsl.web.BaseController;
//
///**
// * 
// * @author lizhifeng
// * 
// */
//@RequestMapping("/monitor")
//@Controller
//public class ReprotContorller extends BaseController
//{
//	@Inject
//	private WidgetApplication widgetApplication;
//	@Inject
//	private MonitorApplication monitorApplication;
//	@Inject
//	private AppMainApplication appMainApplication;
//	@Inject
//	private UserApplication userApplication;
//	@Inject
//	private RbacUserRoleApplication rbacApplication;
//	@Inject
//	private RoleApplication roleApplication;
//	@Inject
//	private AppVersionApplication appVersionApplication;
//	private Logger log = Logger.getLogger(this.getClass());
//	private List<MonitorVO> modulars;// 每日模块活跃度统计
//	private List<MonitorVO> logins;// 每日登陆统计
//	private List<MonitorVO> downLoads;// 每日登陆统计
//	private Map<String, Integer> vpMap;// 存放每个应用版本和平台
//	private MonitorVO user;// 用户统计
//
//	@RequestMapping("show")
//	public String showMonitors(Model model, @RequestParam(value = "date", defaultValue = "today") String date, @RequestParam(value = "appId") String appId)
//	{
//		modulars = new ArrayList<MonitorVO>();// 每日模块活跃度统计
//		logins = new ArrayList<MonitorVO>();// 每日登陆统计
//		user = new MonitorVO();// 用户统计
//		List<WidgetVO> widgetVOs = getModulars();
//		log.info(widgetVOs);
//		List<MonitorVO> modularVOs = getMonitors("Module", date);
//		List<MonitorVO> loginVos = getMonitors("Login", date);
//		List<MonitorVO> downVos = getMonitors("appDownload", date);
//		sumVersionAndPlatForm(downVos, appId);// 更具版本号跟平台对应用进行归类
//		sumDownLoads(downVos, appId);// 下载统计
//		List<AppMainVo> appMainVos = appMainApplication.findAll();
//		sumLogins(appMainVos, loginVos, appId);// 每日登陆统计
//		List<UserVO> userVOs = getUsers();
//		sumModulars(widgetVOs, modularVOs, appId);// 每日模块活跃度统计
//		sumAppUsers(appId, date);// 统计某个应用的用户总量，存放在version中
//		sumUsers(date, userVOs);
//		model.addAttribute("modulars", modulars);
//		model.addAttribute("logins", logins);
//		model.addAttribute("downloads", downLoads);
//		model.addAttribute("user", user);
//		model.addAttribute("appId", appId);
//		AppMainVo appMainVo = appMainApplication.getEntity(appId);
//		model.addAttribute("identity", appMainVo.getIdentifier());
//
//		return "monitor/showMonitors";
//	}
//
//	public void sumAppUsers(String appId, String date)
//	{
//		AppMainVo appMainVo = appMainApplication.getEntity(appId);
//		RoleVO roleVO = roleApplication.getRoleByRoleName(appMainVo.getIdentifier());
//		List<UserVO> userList = rbacApplication.getUsersByRoleID(roleVO.getId());
//		user.setVersion(String.valueOf(userList.size()));
//		SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");// 设置日期格式
//		if (date.equals("today"))
//		{
//			date = df.format(new Date());
//		}
//
//		int sumUser = 0;
//		for (UserVO userVO : userList)
//		{
//			Date createDate = userVO.getCreateAt();
//			String registerDate = "";
//
//			if (createDate != null)
//			{
//				registerDate = df.format(createDate);
//			}
//			if (date.equals(registerDate))
//			{
//				sumUser++;
//			}
//		}
//		user.setPlatformId(String.valueOf(sumUser));
//
//	}
//
//	/**
//	 * 用户统计
//	 * 
//	 * @param date
//	 *            指定时间
//	 * 
//	 * @param userVOs
//	 *            所有用户
//	 * 
//	 */
//	public void sumUsers(String date, List<UserVO> userVOs)
//	{
//		user.setMethodName(String.valueOf(userVOs.size()));// 总用户数量
//		SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");// 设置日期格式
//		if (date.equals("today"))
//		{
//			date = df.format(new Date());
//		}
//		int count = 0;
//		for (UserVO userVO : userVOs)
//		{
//			Date createAt = userVO.getCreateAt();
//			String createDate = "";
//			if (createAt != null)
//			{
//				createDate = df.format(createAt);
//			}
//			if (date.equals(createDate))
//			{
//				count++;
//			}
//
//		}
//		user.setClassName(String.valueOf(count));// 今日新增用户
//		user.setDay(date);// 每日统计日期
//
//	}
//
//	/**
//	 * 
//	 * 获取所有用户
//	 * 
//	 * @return
//	 */
//	public List<UserVO> getUsers()
//	{
//		List<UserVO> userVOs = userApplication.findAll();
//		return userVOs;
//	}
//
//	public List<MonitorVO> getDownLoads(String date)
//	{
//		// List<MonitorVO> list=monitorApplication.
//		return null;
//	}
//
//	// 统计所有版本号+平台 的所有组合
//	public void sumVersionAndPlatForm(List<MonitorVO> mVos, String appId)
//	{
//		vpMap = new HashMap<String, Integer>();
//		AppMainVo appMainVo = appMainApplication.getEntity(appId);
//		for (MonitorVO monitorVO : mVos)
//		{
//			String key = monitorVO.getVersion() + "_=====_" + monitorVO.getPlatformId();
//			if (!appMainVo.getIdentifier().equals(monitorVO.getAppName()))
//			{
//				continue;
//			}
//			if (!vpMap.containsKey(key))
//			{
//				vpMap.put(key, 0);
//			}
//
//		}
//
//		return;
//	}
//
//	// 统计区分版本和平台的应用下载次数
//	public void sumDownLoads(List<MonitorVO> mVos, String appId)
//	{
//		downLoads = new ArrayList<MonitorVO>();
//		AppMainVo appMainVo = appMainApplication.getEntity(appId);
//		for (String vpKey : vpMap.keySet())
//		{
//			int downNumber = 0;
//			for (MonitorVO mVO : mVos)
//			{
//				if (!appMainVo.getIdentifier().equals(mVO.getAppName()))
//				{
//					continue;
//				}
//				String key = mVO.getVersion() + "_=====_" + mVO.getPlatformId();
//				if (vpKey.equals(key))
//				{
//					downNumber++;
//				}
//			}
//			if (downNumber != 0)
//			{
//				MonitorVO downMonitorVO = new MonitorVO();
//				downMonitorVO.setMethodName(vpKey.split("_=====_")[0] + vpKey.split("_=====_")[1]);
//				downMonitorVO.setVersion(vpKey.split("_=====_")[0]);
//				downMonitorVO.setPlatformId(vpKey.split("_=====_")[1]);
//				downMonitorVO.setClassName(String.valueOf(downNumber));
//				downLoads.add(downMonitorVO);
//			}
//		}
//
//		return;
//	}
//
//	public void sumLogins(List<AppMainVo> appMainVos, List<MonitorVO> mVos, String appId)
//	{
//		// 统计登录人数，并将记录放到monitors中
//		for (AppMainVo aVo : appMainVos)
//		{
//			MonitorVO monitorVo = new MonitorVO();
//			int num = 0;
//			for (MonitorVO mVo : mVos)
//			{
//				// 监控日志一期应用名称传过来的都是应用标识
//				if (aVo.getIdentifier().equals(mVo.getAppName()))
//				{
//					num += 1;
//				}
//
//			}
//			if (num != 0)
//			{
//				monitorVo.setMethodName(aVo.getApp_name());
//				monitorVo.setClassName(String.valueOf(num));
//				monitorVo.setId(aVo.getIdentifier());
//				monitorVo.setAppName(aVo.getApp_name());
//				// 参数带appId仅仅显示一个应用的统计结果
//				if (appId != null && aVo.getId().equals(appId))
//				{
//					logins.add(monitorVo);
//				}
//				else if (StringUtils.isEmpty(appId))
//				{
//					logins.add(monitorVo);
//				}
//			}
//
//		}
//	}
//
//	// 获取指定日期指定action的监控记录
//	public List<MonitorVO> getMonitors(String action, String date)
//	{
//		List<MonitorVO> monitorVOs = monitorApplication.getMonitorByActionAndDate(action, date);
//		return monitorVOs;
//	}
//
//	/**
//	 * 获取所有模块
//	 * 
//	 * @param date
//	 * @return
//	 */
//	public List<WidgetVO> getModulars()
//	{
//		List<WidgetVO> widgetVOs = widgetApplication.getModulars();
//		return widgetVOs;
//	}
//
//	public void sumModulars(List<WidgetVO> vos, List<MonitorVO> mVos, String appId)
//	{
//		AppMainVo appMainVo = new AppMainVo();
//		if (appId != null)
//		{
//			appMainVo = appMainApplication.getEntity(appId);
//			user.setAppName(appMainVo.getApp_name());// 用于时间显示的时候需要带上appName
//		}
//		for (WidgetVO w : vos)
//		{
//			int number = 0;
//			for (MonitorVO m : mVos)
//			{
//				if (m.getMethodName() != null)
//				{
//					if (m.getModuleName().equals(w.getIdentify()))
//					{
//						// 区别于一期，实际统计的是某个应用的情况
//						if (appId != null)
//						{
//							// mointorvo中实际存储的是应用标识
//							if (appMainVo.getIdentifier().equals(m.getAppName()))
//							{
//								number += 1;
//							}
//						}
//					}
//				}
//			}
//			// number!=0实际上便过滤了非关联模块的信息
//			if (number != 0)
//			{
//				MonitorVO monitorVO = new MonitorVO();
//				monitorVO.setClassName(w.getName());
//				monitorVO.setMethodName(String.valueOf(number));
//				monitorVO.setId(w.getIdentify());
//				monitorVO.setModuleName(w.getId());
//				monitorVO.setAppName(appMainVo.getApp_name());// 应用名称用于搜索
//				modulars.add(monitorVO);
//			}
//		}
//	}
//
//	@Override
//	protected String getModuleMenuName()
//	{
//		return "效能监控";
//	}
//
//}
